package Chapter8;
//173页程序8.9

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class CardLayoutDemo extends MouseAdapter { //MouseAdapter鼠标适配器
    JPanel p1, p2, p3; //面板
    JLabel l1, l2, l3; //标签
    CardLayout myCard; //布局管理器
    JFrame frame;
    Container contentPane;

    public static void main(String[] args) {
        CardLayoutDemo that = new CardLayoutDemo();
        that.go();
    }

    public void go() {
        frame = new JFrame("CardLayout测试程序");
        contentPane = frame.getContentPane();

        myCard = new CardLayout();
        contentPane.setLayout(myCard); //将内容窗格设置为卡片式布局管理器

        p1 = new JPanel(); //创建3个面板
        p2 = new JPanel();
        p3 = new JPanel();

        Font f = new Font("幼圆", Font.PLAIN, 20); //添加一个字体对象

        l1 = new JLabel("第一个标签"); //创建标签
        l1.setFont(f); //为标签添加字体
        l1.setForeground(Color.PINK); //设置前景色，可为填充或字体
        p1.add(l1); //标签1加入到面板1
        p1.setBackground(Color.BLUE); //设置面板背景色

        l2 = new JLabel("第二个标签");
        p2.add(l2);
        p2.setBackground(Color.ORANGE);

        l3 = new JLabel("第三个标签");
        p3.add(l3);
        p3.setBackground(Color.YELLOW);

        p1.addMouseListener(this); //加入鼠标监听程序，为当前类的对象that
        p2.addMouseListener(this);
        p3.addMouseListener(this);

        contentPane.add(p1, "1"); //把面板加入到内容窗格，constraints是卡片的名称，卡片本质是面板，只不过是用卡片管理器
        contentPane.add(p2, "2");
        contentPane.add(p3, "3");

        myCard.show(contentPane, "2"); //指定显示的第一张卡片是哪个constraints

        frame.setSize(300, 200);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void mouseClicked(MouseEvent e) { //重写鼠标适配器中的点击事件
        myCard.next(contentPane); //当点击会将内容窗格的卡片切换到下一个
    }
}
